home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK2.toast / Development Kits / Hardware / PC Card SDKs / PC Card Manager 2.0 SDK / Software / PC Card Sample / CardSpecific / STNIC.h < prev   
Encoding:
C/C++ Source or Header  |  1997-06-05  |  6.5 KB  |  210 lines  |  [TEXT/CWIE]

  1. /*
  2.     File:        STNIC.h
  3.  
  4.     Contains:    Definitions and constants for accessing the National
  5.                 Semiconductor ST-NIC Ethernet Controller
  6.  
  7.     Written by:    Richard W. Mincher.
  8.  
  9.     Copyright © 1992-1995 by Apple Computer, Inc., all rights reserved.
  10.  
  11.     Change History (most recent first):
  12.  
  13.          <0>     3/21/95    rwm        Initial edit
  14. */
  15. #ifndef    _APPLE_STNIC_
  16. #define    _APPLE_STNIC_
  17.  
  18.  
  19. typedef    struct    STNICReg
  20. {
  21. //    Register Name            PS[0:0]        PS[0:1]            PS[1:0]
  22.  
  23.     unsigned char    r0;    //    CR    ------    CR         -------    CR
  24.     unsigned char    r1;    //    CDLA0        PAR0            PSTART
  25.     unsigned char    r2;    //    CLD1        PAR1
  26.     unsigned char    r3;    //    BNRY        PAR2
  27.     unsigned char    r4;    //    TSR            PAR3
  28.     unsigned char    r5;    //    NCR            PAR4
  29.     unsigned char    r6;    //    FIFO        PAR6
  30.     unsigned char    r7;    //    ISR            CURR
  31.     unsigned char    r8;    //    CRD0        MAR0
  32.     unsigned char    r9;    //    CRD1        MAR1
  33.     unsigned char    ra;    //                MAR2
  34.     unsigned char    rb;    //                MAR3
  35.     unsigned char    rc;    //    RSR            MAR4
  36.     unsigned char    rd;    //    CNTR0        MAR5
  37.     unsigned char    re;    //    CNTR1        MAR6
  38.     unsigned char    rf;    //    CNTR2        MAR7
  39. }    STNICReg;
  40.  
  41. //________________________________________________________
  42. //    Memory Map
  43. //________________________________________________________
  44. #define    TXSTART        0x40
  45. #define    PSTART        0x46
  46. #define    PSTOP        0x80
  47.  
  48. //________________________________________________________
  49. //                                      
  50. // Register page zero addresses.
  51. //
  52. //________________________________________________________
  53.  
  54. //
  55. //    Read/Write registers
  56. //
  57. #define    CommandReg      r0       //    Command register (RW)
  58. #define    BoundaryPtr     r3        //    Boundary pointer (RW)
  59. #define    IntStatus        r7        //    Interrupt status register (RW)
  60.  
  61. //
  62. //    Read-only registers
  63. //
  64. #define    LocalDMA0        r1        //    Current local DMA address 0 (R)
  65. #define    LocalDMA1        r2        //    Current local DMA address 1 (R)
  66.  
  67. #define    XmitStatus        r4        //    Transmit status register (R)
  68.  
  69. #define    NumCollisions      r5        //    Number of collisions (R)
  70.  
  71. #define    FIFO            r6        //    FIFO (R)
  72.  
  73. #define    RemoteDMA0        r8        //    Current remote DMA address 0 (R)
  74. #define    RemoteDMA1        r9        //    Current remote DMA address 1 (R)
  75.  
  76. #define    RcvStatus        rc        //    Receive status register (R)
  77.  
  78. #define    Tally0            rd        //    Tally counter 0 (R) [Frame Alignment Errors]
  79. #define    Tally1            re        //    Tally counter 1 (R) [CRC Errors]
  80. #define    Tally2            rf        //    Tally counter 2 (R) [Missed Packet Errors]
  81.  
  82. //
  83. // Write-only registers
  84. //
  85. #define    PageStart        r1        //    Page start register (W)
  86. #define    PageStop        r2        //    Page stop register (W)
  87.  
  88. #define    XmitPgStart        r4        //    Transmit page start register (W)
  89. #define    XmitCount0        r5        //    Transmit byte count 0 -- low (W)
  90. #define    XmitCount1        r6        //    Transmit byte count 1 -- high (W)
  91.  
  92. #define    RemStart0        r8        //    Remote start address 0 (W)
  93. #define    RemStart1        r9        //    Remote start address 1 (W)
  94. #define    RemCount0        ra        //    Remote byte count 0 (W)
  95. #define    RemCount1        rb        //    Remote byte count 1 (W)
  96.  
  97. #define    RcvConfig        rc        //    Receive configuration register (W)
  98. #define    XmitConfig        rd        //    Transmit configuration register (W)
  99. #define    DataConfig        re        //    Data configuration register (W)
  100.  
  101. #define    IntMask            rf        //    Interrupt mask register (W)
  102.  
  103. //_______________________________________
  104. //                                      
  105. // Register page one addresses
  106. //_______________________________________
  107.  
  108. #define    PhysAddr        r1        //    First of six physical address registers (RW)
  109. #define    CurrPage        r7        //    Current page register (RW)
  110. #define    MultiAddr        r8        //    First of eight multicast address registers (RW)
  111.  
  112.  
  113. //_______________________________________
  114. //                                      
  115. // Receive packet header
  116. //_______________________________________
  117.  
  118. #define    RStatus            0        //    Offset to status byte
  119. #define    RNextPacket        1        //    Offset to next packet pointer
  120. #define    RByteCount        2        //    Offset to packet byte count (word)
  121. #define    RByteCountL        2        //    Offset to packet byte count (low byte)
  122. #define    RByteCountH        3        //    Offset to packet byte count (high byte)
  123. #define    RPacket            4        //    Offset to start of packet
  124.  
  125.  
  126. //_______________________________________
  127. //                                      
  128. // Register-specific definitions
  129. //_______________________________________
  130.  
  131. //
  132. // Command register (OR values together)
  133. //
  134. #define    STOP            0x01    //    Stop bit in CR
  135. #define    START            0x02    //    Start bit in CR
  136. #define    XmitPacket        0x04    //    Transmit packet bit
  137. #define    StopDMA            0x20    //    No DMA indicator
  138.  
  139. #define    Select0            0x00    //    Value to select page zero 
  140. #define    Select1            0x40    //    Value to select page one
  141.  
  142. //
  143. // Interrupt mask register, interrupt status register
  144. //
  145. #define    IntPktRcvd        0x01    //    Packet received interrupt enable
  146. #define    IntPktXmt        0x02    //    Packet transmitted
  147. #define    IntRcvError        0x04    //    Receive error
  148. #define    IntXmitError    0x08    //    Tranmit error
  149. #define    IntOverWrt        0x10    //    Overwrite
  150. #define    IntCntOver        0x20    //    Counter overflow
  151. #define    IntDMA            0x40    //    DMA complete
  152.  
  153. //
  154. // Data configuration register
  155. //
  156. #define    WordXfer        0x01    //    Select word transfer
  157. #define    RevOrder        0x02    //    Reverse order of bytes
  158. #define    LongAddr        0x04    //    Select long address DMA mode
  159. #define    NotLoopback        0x08    //    Select loopback mode
  160. #define    AutoInit        0x10    //    Autoinitialize (what?)
  161.  
  162. #define    Thresh1            0x00    //    Select 1 word FIFO threshold
  163. #define    Thresh2            0x20    //    Select 2 words FIFO threshold
  164. #define    Thresh4            0x40    //    Select 4 words FIFO threshold
  165. #define    Thresh6            0x60    //    Select 6 words FIFO threshold
  166.  
  167. //
  168. // Transmit configuration register
  169. //
  170. #define    NoCRC            0x01    //    Inhibit CRC
  171. #define    NoLoopback        0x00    //    No loopback (normal operation)
  172. #define    Loopback1        0x02    //    Loopback mode 1 (for init)
  173. #define    AutoXmtOff        0x08    //    Auto transmit disable
  174. #define    SpclBackoff        0x10    //    Enable special backoff algorithm
  175.  
  176. //
  177. // Transmit status register
  178. //
  179. #define    XmitOK            0x01    //    Transmit OK
  180. #define    Collided        0x04    //    Transmit with collision
  181. #define    TooManyColls    0x08    //    Too many collisions
  182. #define    CSenseLost        0x10    //    Carrier sense lost
  183. #define    Underrun        0x20    //    FIFO underrun
  184. #define    CDHeartbeat        0x40    //    ?
  185. #define    OutOfWindow        0x80    //    Out-of-window collision
  186.  
  187. //
  188. // Receive configuration register
  189. //
  190. #define    RcvErrors        0x01    //    Receive packets with errors
  191. #define    RcvRunts        0x02    //    Receive runt packets
  192. #define    RcvBroadcast    0x04    //    Receive broadcasts
  193. #define    RcvMulticast    0x08    //    Receive multicast
  194. #define    RcvAll            0x10    //    Promiscuous mode
  195. #define    MonitorMode        0x20    //    Monitor mode (receive nothing)
  196.  
  197. //
  198. // Receive status register
  199. //
  200. #define    RcvOK            0x01    //    Received ok
  201. #define    CRCError        0x02    //    CRC error (also misaligned)
  202. #define    Misaligned        0x04    //    Misaligned frame
  203. #define    FIFOOverrun        0x08    //    FIFO overrun
  204. #define    MissedIt        0x10    //    Missed packet (no room)
  205. #define    Multicasted        0x20    //    Multicast or broadcast packet
  206. #define    RcvrDisabled    0x40    //    Receiver is disabled
  207. #define    Deferring        0x80    //    Deferring
  208.  
  209. #endif
  210.